/*
 * Description: performance constants difinition.
 */
#ifndef PERF_CONSTANTS_H
#define PERF_CONSTANTS_H

#include <string>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>

namespace PERF {

const std::string PNAME_EXCEL = "excel.exe";
const std::string PNAME_POWERPOINT = "powerpnt.exe";
const std::string PNAME_WORD = "winword.exe";
const std::string PNAME_ONENOTE = "onenote.exe";
const std::string PNAME_OUTLOOK = "outlook.exe";
const std::string PNAME_MS_EDGE = "msedge.exe";
const std::string PNAME_AUTOCAD = "acad.exe";
const std::string PNAME_XMIND = "xmind.exe";
const std::string PNAME_ZOOM = "zoom.exe";
const std::string PNAME_PHOTOSHOP = "photoshop.exe";
const std::string PNAME_WINRAR = "winrar.exe";
const std::string PNAME_SOGOUINPUT = "sogoucloud.exe";

const std::string PNAME_EXPLORER = "explorer.exe";

const std::string PNAME_SECURITY = "securityhealthsystray.exe";
const std::string PNAME_TASKMGR = "taskmgr.exe";
const std::string PNAME_MSCORSVW = "mscorsvw.exe";
const std::string PNAME_MSMPENG = "msmpeng.exe";
const std::string PNAME_TIWORKER = "tiworker.exe";
const std::vector<std::string> EFFECTIVE_APPS = { PNAME_EXCEL,   PNAME_POWERPOINT, PNAME_WORD,    PNAME_ONENOTE,
                                                  PNAME_OUTLOOK, PNAME_MS_EDGE,    PNAME_AUTOCAD, PNAME_XMIND,
                                                  PNAME_ZOOM,    PNAME_PHOTOSHOP,  PNAME_WINRAR,  PNAME_SOGOUINPUT,
                                                  PNAME_EXPLORER };
const std::vector<std::string> INEFFECTIVE_APPS = { PNAME_SECURITY, PNAME_TASKMGR, PNAME_MSCORSVW, PNAME_MSMPENG,
                                                    PNAME_TIWORKER };
const std::unordered_set<std::string> PRELOAD_OFFICE_APPS = {};

const std::string TEXT_WORD = "Word";
const std::string TEXT_EXCEL = "Excel";
const std::string TEXT_POWERPOINT = "PowerPoint";

const std::wstring WND_TEXT_SUFFIX_WORD = L"Word";
const std::wstring WND_TEXT_SUFFIX_EXCEL = L"Excel";
const std::wstring WND_TEXT_SUFFIX_POWERPOINT = L"PowerPoint";
const std::unordered_map<std::string, std::wstring> PNAME_TO_WND_TEXT_SUFFIX = { { PNAME_WORD, WND_TEXT_SUFFIX_WORD },
                                                                                 { PNAME_EXCEL, WND_TEXT_SUFFIX_EXCEL },
                                                                                 { PNAME_POWERPOINT,
                                                                                   WND_TEXT_SUFFIX_POWERPOINT } };

constexpr const char *WND_TEXT_PATH = R"(C:\Users\WindowsVM\AppData\Local\Temp\wndText)";

const std::unordered_map<std::string, std::string> PERF_CFG_STR_TO_CHS = {
    { "$str_chs_autorun_name_quark", "\u5938\u514b\u7f51\u76d8" },
};
}  // namespace PERF

#endif